home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / demo / mag / amoner06.dms / amoner06.adf / Autoexec.Amos / Autoexec.amosSourceCode next >
AMOS Source Code  |  1992-12-09  |  6KB  |  240 lines

  1. Screen Open 0,640,200,16,Hires
  2. Break On 
  3. View : Auto View On : Copper On 
  4. Flash Off : Curs On : Show On : Colour 3,$2D9
  5. DISKNAME$="AmoNER006:"
  6. Dim MEN$(40),DESC$(40),TYPE$(40),NAME$(40)
  7. Global MEN$(),DESC$(),TYPE$(),NAME$()
  8. Global CURRENT_MENU$,CURRENT_ITEM,HIGH_ITEM,DISKNAME$
  9. BUILD_SCREEN
  10. DATBASE_READ
  11. DEF_MEN_READ
  12. MENU_READER:
  13. DISPLAY_MENU
  14. MOUSE_READER:
  15. CHECK_ICON
  16. Repeat : Until Mouse Click
  17. If Mouse Zone=0 Then Goto MOUSE_READER
  18. If Mouse Zone=CURRENT_ITEM Then Goto MOUSE_READER
  19. If Mouse Zone>HIGH_ITEM and Mouse Zone<9 Then Goto MOUSE_READER
  20. If Mouse Zone<9
  21.    CURRENT_ITEM=Mouse Zone
  22.    _EXPLODE
  23.    DISPLAY_MENU
  24.    Goto MOUSE_READER
  25. End If 
  26. If Mouse Zone=9
  27.    ENTRY_CHECK
  28.    Goto MENU_READER
  29. End If 
  30. End 
  31. '
  32. ' This builds the Screen Face. 
  33. Procedure BUILD_SCREEN
  34.    Cls 0
  35.    ' paste the space backgroud icon.
  36.    Paste Icon 1,98,3
  37.    ' paste the menu display area icon.
  38.    Paste Icon 0,0,2
  39.    NUM=0
  40.    ' paste numeric keypad icon and set zone for mouse 
  41.    ' on the keypad. 
  42.    Paste Icon 0,119,1
  43.    Reserve Zone 9
  44.    For A=120 To 160 Step 20
  45.       For B=0 To 40 Step 20
  46.          Inc NUM
  47.          Set Zone NUM,B,A To B+15,A+14
  48.       Next B
  49.    Next A
  50.    ' display the menu items index numbers.
  51.    Ink 6,15
  52.    For A=1 To 8
  53.       Text 6,(A-1)*12+9,Right$(Str$(A),1)
  54.    Next A
  55.    Ink 2,0
  56.    Box 100,105 To 300,195
  57.    Ink 7,0
  58.    Bar 101,106 To 299,194
  59.    Ink 5,7 : Text 105,114,"AmoNER No 6/ 27-NOV-1992"
  60.    Draw 105,116 To 296,116
  61.    Text 105,126,"Editor:  Gal-on Broner"
  62.    Text 105,136,"Assistant Editor:"
  63.    Text 105,145,"           Michael Cox"
  64.    Text 105,154,"Contributors:"
  65.    Text 105,163,"    Paul 'Samson' Dale"
  66.    Text 105,172,"         David Rudloff"
  67.    Text 105,181,"            Ryen Scott"
  68.    Text 105,190,"           Salim Gasmi"
  69.    Ink 2,0 : Box 420,105 To 620,195
  70.    Ink 7,0 : Bar 421,106 To 619,194
  71.    ' put the spaceship bob. 
  72.    Bob 1,350,105,1
  73.    ' program an amal procedure for spaceship bob. 
  74.    Channel 1 To Bob 1
  75.    Amal 1,"Loop: For R0=105 To 180 ; Let Y=Y+1 ; Let RX=X ; Let RY=Y ; Next R0 ; For R0=105 To 180 ; Let Y=Y-1 ; Let RX=X ; Let RY=Y ; Next R0 ; Jump Loop "
  76.    Amal On 1
  77. End Proc
  78. ' This reads the files database from the disk. 
  79. Procedure DATBASE_READ
  80.    Open Random 1,DISKNAME$+"files.db"
  81.    Field 1,8 As MEN$,72 As DESC$,1 As TYPE$,20 As NAME$
  82.    For LOO=1 To 40
  83.       Get 1,LOO
  84.       MEN$(LOO)=MEN$
  85.       DESC$(LOO)=DESC$
  86.       TYPE$(LOO)=TYPE$
  87.       NAME$(LOO)=NAME$
  88.    Next LOO
  89.    Close 1
  90. End Proc
  91. ' This reads menu information from the disk. 
  92. Procedure DEF_MEN_READ
  93.    Open In 1,DISKNAME$+"menu.def"
  94.    Input #1,CURRENT_MENU$
  95.    Input #1,CURRENT_ITEM
  96.    Close 1
  97. End Proc
  98. ' This routine shoots a bullet to the mouse zone.
  99. Procedure _EXPLODE
  100.    ' First we get the location of the spaceship.  
  101.    SPACEX=Amreg(23)-8
  102.    SPACEY=Amreg(24)+5
  103.    Bob 2,SPACEX,SPACEY,2
  104.    ' Program an amal routine for the shoot. 
  105.    Shoot 
  106.    Channel 2 To Bob 2
  107.    Amal 2,"Move XS(0,XM)-X,YS(0,YM)-Y,32"
  108.    Amal On 2
  109.    Wait Vbl 
  110.    While Chanmv(2) : Wend 
  111.    ' When movment finish - explode. 
  112.    Boom 
  113.    Amal 2,"Anim 1,(3,10)(4,10)(5,10)(5,10)"
  114.    Amal On 2
  115.    Wait Vbl 
  116.    While Chanan(2) : Wend 
  117.    Bob Off 2
  118. End Proc
  119. ' This display the menu. 
  120. Procedure DISPLAY_MENU
  121.    SIZE=Len(CURRENT_MENU$)
  122.    PLACE=0
  123.    For LOO=1 To 40
  124.       If Left$(MEN$(LOO),SIZE)=CURRENT_MENU$
  125.          If PLACE+1=CURRENT_ITEM
  126.             Ink 4,15
  127.          Else 
  128.             Ink 2,15
  129.          End If 
  130.          Text 26,PLACE*12+9,DESC$(LOO)
  131.          Inc PLACE
  132.       End If 
  133.    Next LOO
  134.    HIGH_ITEM=PLACE
  135. End Proc
  136. ' what icon to display?
  137. Procedure CHECK_ICON
  138.    Ink 7,0 : Bar 421,106 To 619,194
  139.    If((CURRENT_MENU$="main") and(CURRENT_ITEM=3 or CURRENT_ITEM=4))
  140.       Paste Icon 421,106,5
  141.       Ink 2,0 : Box 420,105 To 620,195
  142.       Ink 7,15
  143.       Pop Proc
  144.    End If 
  145.    If((CURRENT_MENU$="main") and(CURRENT_ITEM=6))
  146.       Paste Icon 421,106,6
  147.       Ink 2,0 : Box 420,105 To 620,195
  148.       Ink 7,15
  149.       Pop Proc
  150.    End If 
  151.    If(((CURRENT_MENU$="main") and(CURRENT_ITEM=5)) or(CURRENT_MENU$="memo"))
  152.       Paste Icon 421,106,7
  153.       Ink 2,0 : Box 420,105 To 620,195
  154.       Ink 7,15
  155.       Pop Proc
  156.    End If 
  157.    Paste Icon 421,107,4
  158.    Ink 2,0 : Box 420,105 To 620,195
  159.    Ink 7,15
  160. End Proc
  161. ' This cleans up the menu. 
  162. Procedure CLEAN_MENU
  163.    Ink 15
  164.    CLEAN$=Space$(72)
  165.    For PLACE=0 To 7
  166.       Text 26,PLACE*12+9,CLEAN$
  167.    Next PLACE
  168. End Proc
  169. ' Now come the most importent procedure. 
  170. ' This check the entry.
  171. Procedure ENTRY_CHECK
  172.    SIZE=Len(CURRENT_MENU$)
  173.    PLACE=1
  174.    ENTRY_TYPE$="" : Rem The entry type.  
  175.    ENTRY_NAME$="" : Rem the entry name.
  176.    Rem
  177.    Rem this loop gets the entry name and type.
  178.    Rem
  179.    For LOO=1 To 40
  180.       If Left$(MEN$(LOO),SIZE)=CURRENT_MENU$
  181.          If PLACE=CURRENT_ITEM
  182.             ENTRY_TYPE$=TYPE$(LOO)
  183.             ENTRY_NAME$=NAME$(LOO)
  184.             Goto ENTRY_FOUND
  185.          End If 
  186.          Inc PLACE
  187.       End If 
  188.    Next LOO
  189.    ENTRY_FOUND:
  190.    Rem
  191.    Rem Trip off the spaces in the entry_name$ 
  192.    Rem
  193.    For LOO=1 To Len(ENTRY_NAME$)
  194.       If Mid$(ENTRY_NAME$,LOO,1)=" "
  195.          ENTRY_NAME$=Left$(ENTRY_NAME$,LOO-1)
  196.          Goto ENTRY_TRIMED
  197.       End If 
  198.    Next LOO
  199.    '   End  
  200.    ENTRY_TRIMED:
  201.    Rem
  202.    Rem M type items are menus 
  203.    Rem
  204.    If ENTRY_TYPE$="m"
  205.       CURRENT_MENU$=ENTRY_NAME$
  206.       CURRENT_ITEM=1
  207.       CLEAN_MENU
  208.       Pop Proc
  209.    End If 
  210.    ' Ok.... Since this is either run or print on screen we need to clear some memory. 
  211.    Bob Off : Wait Vbl : Erase 1 : Erase 2 : Default : Cls 0
  212.    Rem  
  213.    Rem P type are to print on screen using Amore. 
  214.    Rem
  215.    If ENTRY_TYPE$="p"
  216.       BUILD_AMORE_FILE[ENTRY_NAME$]
  217.       BUILD_MENU_FILE
  218.       Run DISKNAME$+"Amore.Amos"
  219.    End If 
  220.    Rem  
  221.    Rem and R type to run
  222.    Rem
  223.    If ENTRY_TYPE$="r"
  224.       BUILD_MENU_FILE
  225.       Run DISKNAME$+ENTRY_NAME$
  226.    End If 
  227. End Proc
  228. ' This buils proper data file for Amore. 
  229. Procedure BUILD_AMORE_FILE[FILENAME$]
  230.    Open Out 1,DISKNAME$+"Editor/Filename.dat"
  231.    Print #1,FILENAME$
  232.    Close 1
  233. End Proc
  234. ' And last, this file keeps the menu and item area.
  235. Procedure BUILD_MENU_FILE
  236.    Open Out 1,DISKNAME$+"menu.def"
  237.    Print #1,CURRENT_MENU$
  238.    Print #1,CURRENT_ITEM
  239.    Close 1
  240. End Proc